草庐IT

c++ - 将代码作为参数传递 (C++)

全部标签

objective-c - cgo godefs 和 Objective-C

我通过CGoLang的包在GoLang上编写了一个包含Objective-C代码(调用一些OSXAPI)的程序,我需要从Go传递类型为T的变量代码到Objective-C代码,反之亦然。T是结构(或其他类型)。所以我需要在GoLang中创建兼容的(在内存布局方面)类型/变量,并通过unsafe.Pointer转换将其传递给Objective-C。对于通用C代码,我在这种情况下使用godefs,但我无法将godefs用于Objective-C。如果我尝试gotoolcgo-godefscgodefs.go//Thisis"cgodefs.go"filepackagetmp/*#cgoCF

c# - 如何通过引用修改该字符串的非托管 C 库来发送字符串?

我是与非托管库交互的新手。我有一个非托管C函数,它通过函数内的引用修改字符串。我在从C#传递字符串并通过C函数修改它时遇到问题。这是C函数:__declspec(dllexport)void__stdcallTest(char*name){*name="Bar";}这是C#DLL导入代码:[DllImport(@"C:/blah/mylibrary.dll")]publicexternstaticstringTest(stringname);这是我用来调用函数的代码:strings="foo";Test(s);//Iwantstobe"Bar"aftertheaboveline我曾尝试

c++ - 无法使用 Unicode 特殊字符设置窗口文本

我正在尝试使用下面指定的unicode特殊字符通过代码设置对话框项文本:https://www.fileformat.info/info/unicode/char/1f310/index.htm我一直在尝试调用SetWindowTextW函数,将UTF-16(十六进制)值作为参数传递,但没有成功:GetDlgItem(IDSETTINGS)->SetWindowTextW(_T("\uD83C\uDF10"));当我构建我的解决方案时,我遇到了两个错误:errorC3850:'\uD83C'auniversal-character-.namespecifiedaninvalidchar

c++ - 有没有办法在 GCC 中禁用内联汇编程序?

我正在为LeetCode、Codeforces等编程竞赛开发一个在线评委系统。对于大多数编程竞赛,C/C++中不允许使用内联汇编程序,因此我想在我的系统中添加相同的限制。我想让GCC和G++在编译包含内联汇编的C/C++程序时产生错误,这样任何包含内联汇编的代码都会导致编译错误。有办法实现吗?我应该将一些命令行参数传递给GCC/G++吗?注意:禁用内联汇编只是为了遵守规则,而不是出于安全考虑。 最佳答案 有没有办法在GCC中禁用内联汇编程序?是的,有几种方法。在编译器中关闭汇编要在编译阶段执行此操作,请使用参数-fno-asm。但是

c - 调用Windows API函数(stdcall)的符号扩展规则是什么?这是从 Go 调用 WInAPI 所必需的,它对 int 类型很严格

哎呀,我做thisanswer的时候忘了一件事,这是我自己都不太确定的事情,而且我似乎无法在MSDN和Google以及StackOverflow搜索中找到相关信息。在WindowsAPI中有很多地方使用负数,或者一个太大而无法放入有符号整数的数字;例如,CW_USEDEFAULT、INVALID_HANDLE_VALUE、GWLP_USERDATA等。在C的世界里,一切都很好,很漂亮:语言的整数提升规则来拯救。但在Go中,我必须将所有参数作为uintptr(相当于C的uintptr_t)传递给函数。函数的返回值也是这样返回的,然后我就需要比较了。Go不允许整数提升,也不允许您在编译时将

c - 调用Windows API函数(stdcall)的符号扩展规则是什么?这是从 Go 调用 WInAPI 所必需的,它对 int 类型很严格

哎呀,我做thisanswer的时候忘了一件事,这是我自己都不太确定的事情,而且我似乎无法在MSDN和Google以及StackOverflow搜索中找到相关信息。在WindowsAPI中有很多地方使用负数,或者一个太大而无法放入有符号整数的数字;例如,CW_USEDEFAULT、INVALID_HANDLE_VALUE、GWLP_USERDATA等。在C的世界里,一切都很好,很漂亮:语言的整数提升规则来拯救。但在Go中,我必须将所有参数作为uintptr(相当于C的uintptr_t)传递给函数。函数的返回值也是这样返回的,然后我就需要比较了。Go不允许整数提升,也不允许您在编译时将

c++ - 为什么 C 和 C++ 支持在结构中按成员分配数组,但通常不支持?

我了解不支持数组的成员分配,因此以下内容将不起作用:intnum1[3]={1,2,3};intnum2[3];num2=num1;//"error:invalidarrayassignment"我只是接受了这一点,认为该语言的目的是提供一个开放式框架,并让用户决定如何实现诸如复制数组之类的事情。但是,以下方法确实有效:structmyStruct{intnum[3];};structmyStructstruct1={{1,2,3}};structmyStructstruct2;struct2=struct1;数组num[3]是从其在struct1中的实例按成员分配到其在struct2

c++ - 为什么 C 和 C++ 支持在结构中按成员分配数组,但通常不支持?

我了解不支持数组的成员分配,因此以下内容将不起作用:intnum1[3]={1,2,3};intnum2[3];num2=num1;//"error:invalidarrayassignment"我只是接受了这一点,认为该语言的目的是提供一个开放式框架,并让用户决定如何实现诸如复制数组之类的事情。但是,以下方法确实有效:structmyStruct{intnum[3];};structmyStructstruct1={{1,2,3}};structmyStructstruct2;struct2=struct1;数组num[3]是从其在struct1中的实例按成员分配到其在struct2

java - 什么会导致 Java native 函数(在 C 中)在进入时出现段错误?

该项目我正在使用Javanative接口(interface)为内部网络和网络测试工具的C库编写Java命令行接口(interface)。C代码(不是我写的)复杂且低级,通常在位级别操作内存,并且专门使用原始套接字。该应用程序从C端(在后台运行的pthreads)和Java端(ScheduledThreadPoolExecutors运行调用native代码的线程)是多线程的。也就是说,C库应该大部分是稳定的。事实证明,Java和JNI接口(interface)代码导致了问题。问题应用程序在进入nativeC函数时因段错误而崩溃。这仅在程序处于特定状态时发生(即成功运行特定native函

java - 什么会导致 Java native 函数(在 C 中)在进入时出现段错误?

该项目我正在使用Javanative接口(interface)为内部网络和网络测试工具的C库编写Java命令行接口(interface)。C代码(不是我写的)复杂且低级,通常在位级别操作内存,并且专门使用原始套接字。该应用程序从C端(在后台运行的pthreads)和Java端(ScheduledThreadPoolExecutors运行调用native代码的线程)是多线程的。也就是说,C库应该大部分是稳定的。事实证明,Java和JNI接口(interface)代码导致了问题。问题应用程序在进入nativeC函数时因段错误而崩溃。这仅在程序处于特定状态时发生(即成功运行特定native函
12